/**
 *      1,原型是什么？
 *             a,在当时java是最流行的语言,JS中的数据类型受java影响,都是对象类型。那么问题就来了,有对象必然涉及到继承机制。那js的继承机制要设计成跟java一样呢？还是重新设计？
 *       如果设计成一样,那不就是java语言了吗？(所以设计者重新设计了,但是依然参考了java的特性) 查看 Run_33原型的设计.js
 *
 *       b,在java中生成对象是通过new的方式，通过类生成一个实例对象，但是js中并没有类，那么设计者该怎么做呢？
 *              设计者找到了java和js的共同点，两者都有构造函数，java的new的过程其实内部调用了构造函数。但是js没有类的概念，于是js就把new一个类设计成了new一个构造函数，
 *       于是构造函数成为一个实例对象的原型对象。
*/

//构造函数
function Dog(name,weight){
    this.name = name;
    this.weight = weight;
}

//new一个新对象
var dog = new Dog('大黄',20);//[ew Dog('大黄',20)]是一个实例对象,[var dog]是引用对象,上方的函数[function Dog]是原型对象


/**
 *      2,为什么要设计原型对象
 *          答：上述的原型设计方式有个致命的缺点——无法共享公有属性，
 *          为了解决这样的问题,设计者设计了原型对象,用来存储对象共享的属性。
 */

/**
 *      3,解决方法
 *          要想让构造函数生成的所有实例对象都能够共享属性，设计者给构造函数加一个属性叫做prototype，
 *          我们把所有实例对象共享的属性和方法都放在这个构造函数的prototype中
 */


